1. Field of the Invention
This application relates to functional verification operations, and more particularly to race condition ordering systems and methods used in functional verification modeling.
2. Description of Related Art
Pre-silicon verification operations consume as much as 50% of the total design time for system-on-a-chip projects. Such design verification includes simulation in a hardware description language (HDL) and comparison of the simulation results with functional model design results based upon the same stimulus. A race condition in HDL simulation includes one or more signals changing in the same time slice, when an operation depends on the order of occurrence of particular signal changes. As a result, HDL simulation does not guarantee an identical evaluation under race conditions. In HDL design descriptions, race conditions in a design need to be methodically planned for and avoided, to ensure hardware operation upon design implementation. In HDL simulators, the order of operations is not specified as to race conditions. However, in constructing functional models for verification, dealing with race conditions is unavoidable. For example, it may be necessary to compare an HDL code block output with results derived from certain inputs. Early during design, simulations are run without considering timing delays. Further, the inputs and outputs of a block may be propagated for functional verification during the same time slice. This presents an undesired race condition under which it is unclear which information will first be used, which detrimentally affects the results of verification, because depending upon the order of arrival of simulation events at a functional verification model, false failures are detectable. According to one current approach, complex semaphores are employed to ensure operability in the face of race conditions. Such complex solutions are dependent upon particular race conditions, and the design of the software code for the solutions is time-consuming and inefficient. Further, the use of semaphores creates ambiguities which detrimentally affect maintenance and reusability of the functional model.
It is desirable that solutions be developed which limit computational overhead to a minimum and which require a minimum memory allocation.
According to the present invention, an event sequencer for a functional mechanism contains a list of signatures and corresponding priority designations, and an event list containing event information including race condition events that are to be re-ordered. A method for sequencing race condition events according to the present invention, includes storing signatures for identifying predetermined events, storing priority designations corresponding to the signatures to enable identification of relative priorities between identified events, detecting at least first and second potential race condition events and information about each event, storing the events and event information associated with each event, sorting the events, and sending the sorted events to a functional mechanism. Events are compared with stored signatures, and signature matches are determined to determine whether an actual race condition exists. The arrival of events is detected, events are compared with stored signatures, and matches between events and signatures are established. Events are handled by detecting their arrival and making a determination as to whether to enter into a new time slice. Additionally, the events within each time slice are reordered by the sequencer according to the present invention. Finally, the sequencer sends the reordered, stored events to the functional model in a playback mode, according to the present invention.